跳到主要内容

Swift 字符与字符串

阐述

字符(Character)类型对应的是一个 Unicode 的扩展字素群。这个字素群可以包含一个或多个 Unicode 码位。

而字符串(String)类型在内部存储中也是一系列 Unicode 码位的序列,它可以看作是多个 Character 的序列。

子字符串 Substring

可以用切片(Swift 范围)来获得一个子串,它是一个 Substring 对象。

Unicode 编码的访问

可以用过 utf8, utf16 以及 unicodeScalars 等属性来访问实际的编码值。

实例

let eAcute: Character = "\u{E9}"                         // é
let combinedEAcute: Character = "\u{65}\u{301}" // e followed by ́
// eAcute is é, combinedEAcute is é

性质

  • 字符串的长度(.count)是计算字符串中字符的数量,由于要考虑到不同的字素群,所以这种计数是 O(n) 的
  • 字符串不能直接用整数来索引,而需要用 String.Index 类型。这样类型有几个用法:
    • s.startIndex, s.endIndex 获取起始和终止索引
    • s.index(before: xxx)s.index(after: xxx) 根据前一个索引获取新的索引
    • s.index(s.startIndex, offsetBy: 7) 可以获取在某一位置之后的索引
    • s.indices 方法返回所有的索引
  • 字符串的更改:可以用 insertremove 等函数,附加一个合适的 at 参数

字符串的比较

字符串的相等性是用字素群正则等价来判断的;类似的有前缀和后缀的判断。

相关内容

参考文献